package com.qr.service.wmyw.impl;

import java.util.List;
import java.util.Map;
import com.baomidou.mybatisplus.core.conditions.Wrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import org.apache.ibatis.mapping.ResultMapping;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import cn.krui.helper.db.DBHelper;
import cn.krui.helper.db.DataPage;
import com.qr.bean.wmyw.QrShop;
import com.qr.bean.wmyw.QrShopView;
import com.qr.controller.WmywBase;
import com.qr.mapper.wmyw.QrShopMapper;
import com.qr.mapper.wmyw.QrShopMapperView;
import com.qr.service.wmyw.QrShopService;
//import org.apache.dubbo.config.annotation.Service;

/**
 * @author: zc
 * email: zc8023zs@163.com
 * create_time: 2020/8/13 10:25:39
 */
@Service
//@Service(version = "1.0.0",group="dubbo")
public class QrShopServiceImpl implements QrShopService{
    @Autowired
    private QrShopMapper qrShopMapper;

    @Autowired
    private QrShopMapperView qrShopMapperView;
    
    @Autowired
    private DBHelper dbHelper;

    /**
     * 构造查询条件
     */
    private QueryWrapper<QrShop> InitWrapper(QrShop where){
        QueryWrapper<QrShop> whereWrapper = new QueryWrapper<QrShop>();
        if(where.getShop_id()!=null){
			whereWrapper.eq("shop_id",where.getShop_id());
		}
        if(where.getOc_id()!=null){
			whereWrapper.eq("oc_id",where.getOc_id());
		}
        if(where.getShop_mode()!=null){
			whereWrapper.eq("shop_mode",where.getShop_mode());
		}
        if(where.getShop_number()!=null){
			whereWrapper.eq("shop_number",where.getShop_number());
		}
        if(where.getShop_name()!=null){
			whereWrapper.eq("shop_name",where.getShop_name());
		}
        if(where.getShop_type()!=null){
			whereWrapper.eq("shop_type",where.getShop_type());
		}
        if(where.getShop_status()!=null){
			whereWrapper.eq("shop_status",where.getShop_status());
		}
        if(where.getShop_time_type()!=null){
			whereWrapper.eq("shop_time_type",where.getShop_time_type());
		}
        if(where.getLng()!=null){
			whereWrapper.eq("lng",where.getLng());
		}
        if(where.getLat()!=null){
			whereWrapper.eq("lat",where.getLat());
		}
        if(where.getShop_tel()!=null){
			whereWrapper.eq("shop_tel",where.getShop_tel());
		}
        if(where.getShop_address()!=null){
			whereWrapper.eq("shop_address",where.getShop_address());
		}
        if(where.getLogo()!=null){
			whereWrapper.eq("logo",where.getLogo());
		}
        if(where.getAuto_get()!=null){
			whereWrapper.eq("auto_get",where.getAuto_get());
		}
        if(where.getDelivery_type()!=null){
			whereWrapper.eq("delivery_type",where.getDelivery_type());
		}
        if(where.getDelivery2()!=null){
			whereWrapper.eq("delivery2",where.getDelivery2());
		}
        if(where.getReserve()!=null){
			whereWrapper.eq("reserve",where.getReserve());
		}
        if(where.getReserve_max_day()!=null){
			whereWrapper.eq("reserve_max_day",where.getReserve_max_day());
		}
        if(where.getReserve_begin_time()!=null){
			whereWrapper.eq("reserve_begin_time",where.getReserve_begin_time());
		}
        if(where.getReserve_end_time()!=null){
			whereWrapper.eq("reserve_end_time",where.getReserve_end_time());
		}
        if(where.getImgs()!=null){
			whereWrapper.eq("imgs",where.getImgs());
		}
        if(where.getNotice()!=null){
			whereWrapper.eq("notice",where.getNotice());
		}
        if(where.getPer_cost()!=null){
			whereWrapper.eq("per_cost",where.getPer_cost());
		}
        if(where.getSend_out_up()!=null){
			whereWrapper.eq("send_out_up",where.getSend_out_up());
		}
        if(where.getHeavy_weather()!=null){
			whereWrapper.eq("heavy_weather",where.getHeavy_weather());
		}
        if(where.getDelivery_time_usual()!=null){
			whereWrapper.eq("delivery_time_usual",where.getDelivery_time_usual());
		}
        if(where.getDelivery_time_special()!=null){
			whereWrapper.eq("delivery_time_special",where.getDelivery_time_special());
		}
        if(where.getDelivery_cost_usual()!=null){
			whereWrapper.eq("delivery_cost_usual",where.getDelivery_cost_usual());
		}
        if(where.getDelivery_cost_special()!=null){
			whereWrapper.eq("delivery_cost_special",where.getDelivery_cost_special());
		}
        if(where.getDelivery_cost_off()!=null){
			whereWrapper.eq("delivery_cost_off",where.getDelivery_cost_off());
		}
        if(where.getCreate_time()!=null){
			whereWrapper.eq("create_time",where.getCreate_time());
		}
        if(where.getClass_main()!=null){
			whereWrapper.eq("class_main",where.getClass_main());
		}
        if(where.getClass_main_value()!=null){
			whereWrapper.eq("class_main_value",where.getClass_main_value());
		}
        if(where.getClass_minor()!=null){
			whereWrapper.eq("class_minor",where.getClass_minor());
		}
        if(where.getClass_minor_value()!=null){
			whereWrapper.eq("class_minor_value",where.getClass_minor_value());
		}
        if(where.getParent_id()!=null){
			whereWrapper.eq("parent_id",where.getParent_id());
		}
        if(where.getRpt_score()!=null){
			whereWrapper.eq("rpt_score",where.getRpt_score());
		}
        if(where.getRpt_month_sale()!=null){
			whereWrapper.eq("rpt_month_sale",where.getRpt_month_sale());
		}
        if(where.getRpt_like()!=null){
			whereWrapper.eq("rpt_like",where.getRpt_like());
		}
        if(where.getRpt_favorite()!=null){
			whereWrapper.eq("rpt_favorite",where.getRpt_favorite());
		}
        if(where.getAmount_temp()!=null){
			whereWrapper.eq("amount_temp",where.getAmount_temp());
		}
        if(where.getAmount()!=null){
			whereWrapper.eq("amount",where.getAmount());
		}
        if(where.getAmount_freeze()!=null){
			whereWrapper.eq("amount_freeze",where.getAmount_freeze());
		}
        if(where.getAmount_extraction()!=null){
			whereWrapper.eq("amount_extraction",where.getAmount_extraction());
		}
        if(where.getRpt_comment()!=null){
			whereWrapper.eq("rpt_comment",where.getRpt_comment());
		}
        if(where.getRpt_star0_cnt()!=null){
			whereWrapper.eq("rpt_star0_cnt",where.getRpt_star0_cnt());
		}
        if(where.getRpt_star1_cnt()!=null){
			whereWrapper.eq("rpt_star1_cnt",where.getRpt_star1_cnt());
		}
        if(where.getRpt_star2_cnt()!=null){
			whereWrapper.eq("rpt_star2_cnt",where.getRpt_star2_cnt());
		}
        if(where.getRpt_star3_cnt()!=null){
			whereWrapper.eq("rpt_star3_cnt",where.getRpt_star3_cnt());
		}
        if(where.getRpt_star4_cnt()!=null){
			whereWrapper.eq("rpt_star4_cnt",where.getRpt_star4_cnt());
		}
        if(where.getRpt_star5_cnt()!=null){
			whereWrapper.eq("rpt_star5_cnt",where.getRpt_star5_cnt());
		}
        if(where.getNo_order()!=null){
			whereWrapper.eq("no_order",where.getNo_order());
		}
        if(where.getNo_reset_date()!=null){
			whereWrapper.eq("no_reset_date",where.getNo_reset_date());
		}
        if(where.getVersion_id()!=null){
			whereWrapper.eq("version_id",where.getVersion_id());
		}
        return whereWrapper;
    }

    private QueryWrapper<QrShopView> InitWrapperView(QrShopView where){
        QueryWrapper<QrShopView> whereWrapper = new QueryWrapper<QrShopView>();
        if(where.getShop_id()!=null){
			whereWrapper.eq("shop_id",where.getShop_id());
		}
        if(where.getOc_id()!=null){
			whereWrapper.eq("oc_id",where.getOc_id());
		}
        if(where.getShop_mode()!=null){
			whereWrapper.eq("shop_mode",where.getShop_mode());
		}
        if(where.getShop_number()!=null){
			whereWrapper.eq("shop_number",where.getShop_number());
		}
        if(where.getShop_name()!=null){
			whereWrapper.eq("shop_name",where.getShop_name());
		}
        if(where.getShop_type()!=null){
			whereWrapper.eq("shop_type",where.getShop_type());
		}
        if(where.getShop_status()!=null){
			whereWrapper.eq("shop_status",where.getShop_status());
		}
        if(where.getShop_time_type()!=null){
			whereWrapper.eq("shop_time_type",where.getShop_time_type());
		}
        if(where.getLng()!=null){
			whereWrapper.eq("lng",where.getLng());
		}
        if(where.getLat()!=null){
			whereWrapper.eq("lat",where.getLat());
		}
        if(where.getShop_tel()!=null){
			whereWrapper.eq("shop_tel",where.getShop_tel());
		}
        if(where.getShop_address()!=null){
			whereWrapper.eq("shop_address",where.getShop_address());
		}
        if(where.getLogo()!=null){
			whereWrapper.eq("logo",where.getLogo());
		}
        if(where.getAuto_get()!=null){
			whereWrapper.eq("auto_get",where.getAuto_get());
		}
        if(where.getDelivery_type()!=null){
			whereWrapper.eq("delivery_type",where.getDelivery_type());
		}
        if(where.getDelivery2()!=null){
			whereWrapper.eq("delivery2",where.getDelivery2());
		}
        if(where.getReserve()!=null){
			whereWrapper.eq("reserve",where.getReserve());
		}
        if(where.getReserve_max_day()!=null){
			whereWrapper.eq("reserve_max_day",where.getReserve_max_day());
		}
        if(where.getReserve_begin_time()!=null){
			whereWrapper.eq("reserve_begin_time",where.getReserve_begin_time());
		}
        if(where.getReserve_end_time()!=null){
			whereWrapper.eq("reserve_end_time",where.getReserve_end_time());
		}
        if(where.getImgs()!=null){
			whereWrapper.eq("imgs",where.getImgs());
		}
        if(where.getNotice()!=null){
			whereWrapper.eq("notice",where.getNotice());
		}
        if(where.getPer_cost()!=null){
			whereWrapper.eq("per_cost",where.getPer_cost());
		}
        if(where.getSend_out_up()!=null){
			whereWrapper.eq("send_out_up",where.getSend_out_up());
		}
        if(where.getHeavy_weather()!=null){
			whereWrapper.eq("heavy_weather",where.getHeavy_weather());
		}
        if(where.getDelivery_time_usual()!=null){
			whereWrapper.eq("delivery_time_usual",where.getDelivery_time_usual());
		}
        if(where.getDelivery_time_special()!=null){
			whereWrapper.eq("delivery_time_special",where.getDelivery_time_special());
		}
        if(where.getDelivery_cost_usual()!=null){
			whereWrapper.eq("delivery_cost_usual",where.getDelivery_cost_usual());
		}
        if(where.getDelivery_cost_special()!=null){
			whereWrapper.eq("delivery_cost_special",where.getDelivery_cost_special());
		}
        if(where.getDelivery_cost_off()!=null){
			whereWrapper.eq("delivery_cost_off",where.getDelivery_cost_off());
		}
        if(where.getCreate_time()!=null){
			whereWrapper.eq("create_time",where.getCreate_time());
		}
        if(where.getClass_main()!=null){
			whereWrapper.eq("class_main",where.getClass_main());
		}
        if(where.getClass_main_value()!=null){
			whereWrapper.eq("class_main_value",where.getClass_main_value());
		}
        if(where.getClass_minor()!=null){
			whereWrapper.eq("class_minor",where.getClass_minor());
		}
        if(where.getClass_minor_value()!=null){
			whereWrapper.eq("class_minor_value",where.getClass_minor_value());
		}
        if(where.getParent_id()!=null){
			whereWrapper.eq("parent_id",where.getParent_id());
		}
        if(where.getRpt_score()!=null){
			whereWrapper.eq("rpt_score",where.getRpt_score());
		}
        if(where.getRpt_month_sale()!=null){
			whereWrapper.eq("rpt_month_sale",where.getRpt_month_sale());
		}
        if(where.getRpt_like()!=null){
			whereWrapper.eq("rpt_like",where.getRpt_like());
		}
        if(where.getRpt_favorite()!=null){
			whereWrapper.eq("rpt_favorite",where.getRpt_favorite());
		}
        if(where.getAmount_temp()!=null){
			whereWrapper.eq("amount_temp",where.getAmount_temp());
		}
        if(where.getAmount()!=null){
			whereWrapper.eq("amount",where.getAmount());
		}
        if(where.getAmount_freeze()!=null){
			whereWrapper.eq("amount_freeze",where.getAmount_freeze());
		}
        if(where.getAmount_extraction()!=null){
			whereWrapper.eq("amount_extraction",where.getAmount_extraction());
		}
        if(where.getRpt_comment()!=null){
			whereWrapper.eq("rpt_comment",where.getRpt_comment());
		}
        if(where.getRpt_star0_cnt()!=null){
			whereWrapper.eq("rpt_star0_cnt",where.getRpt_star0_cnt());
		}
        if(where.getRpt_star1_cnt()!=null){
			whereWrapper.eq("rpt_star1_cnt",where.getRpt_star1_cnt());
		}
        if(where.getRpt_star2_cnt()!=null){
			whereWrapper.eq("rpt_star2_cnt",where.getRpt_star2_cnt());
		}
        if(where.getRpt_star3_cnt()!=null){
			whereWrapper.eq("rpt_star3_cnt",where.getRpt_star3_cnt());
		}
        if(where.getRpt_star4_cnt()!=null){
			whereWrapper.eq("rpt_star4_cnt",where.getRpt_star4_cnt());
		}
        if(where.getRpt_star5_cnt()!=null){
			whereWrapper.eq("rpt_star5_cnt",where.getRpt_star5_cnt());
		}
        if(where.getNo_order()!=null){
			whereWrapper.eq("no_order",where.getNo_order());
		}
        if(where.getNo_reset_date()!=null){
			whereWrapper.eq("no_reset_date",where.getNo_reset_date());
		}
        if(where.getVersion_id()!=null){
			whereWrapper.eq("version_id",where.getVersion_id());
		}
        return whereWrapper;
    }

    /**
     * 商户/门店新增
     * @param model 商户/门店实体
     * @return 影响行数
     */
	@Override
    public Integer add(QrShop model){
        return qrShopMapper.insert(model);
    }

    /**
     * 商户/门店修改byid
     * @param model 商户/门店实体
     * @return 影响行数
     */
	@Override
    public Integer update(QrShop model) {
        return qrShopMapper.updateById(model);
    }

    /**
     * 商户/门店修改by条件
     * @param model 商户/门店实体
     * @param where 商户/门店条件
     * @return 影响行数
     */
	@Override
    public Integer update(QrShop model, Wrapper<QrShop> where) {
        return qrShopMapper.update(model, where);
    }

    /**
     * 商户/门店修改by条件-自动封装Wrapper
     * @param model 商户/门店实体
     * @return 影响行数
     */
	@Override
    public Integer update(QrShop model, QrShop where) {
        Wrapper<QrShop> wrapper = InitWrapper(where);
        return update(model, wrapper);
    }

    /**
     * 商户/门店修改bySQL *version_id = newVersion where version_id = oldVersion
     * @param fields 修改的数据 col1=xx,col2=yy
     * @param where 参数化条件 col1=#{col1}
     * @param params 条件参数 col1=xx
     * @return 影响行数
     */
	@Override
    public Integer update(Map<String, Object> fields, String where, Map<String, Object> params) {
        return dbHelper.update("qr_shop", fields, where, params);
    }

    /**
     * 商户/门店删除byid
     * @param id 商户/门店主键
     * @return 影响行数
     */
	@Override
    public Integer del(int id) {
        return qrShopMapper.deleteById(id);
    }

    /**
     * 商户/门店删除by条件
     * @param where 商户/门店条件
     * @return 影响行数
     */
	@Override
    public Integer del(Wrapper<QrShop> where) {
        return qrShopMapper.delete(where);
    }

    /**
     * 商户/门店删除by条件-自动封装Wrapper
     * @param where 商户/门店条件
     * @return 影响行数
     */
    @Override
    public Integer del(QrShop where) { 
        Wrapper<QrShop> wrapper = InitWrapper(where);
        return del(wrapper);
    }

    /**
     * 商户/门店批量删除byid
     * @param ids 商户/门店主键集合
     * @return 影响行数
     */
	@Override
    public Integer del(List<Integer> ids){
        return qrShopMapper.deleteBatchIds(ids);
    }

    /**
     * 商户/门店批量删除bymap条件
     * @param map 商户/门店map条件
     * @return 影响行数
     */
	@Override
    public Integer del(Map<String,Object> map){
        return qrShopMapper.deleteByMap(map);
    }

    /**
     * 商户/门店详情byid
     * @param id 商户/门店主键
     * @return 商户/门店详情
     */
	@Override
    public QrShopView info(int id){
        return qrShopMapperView.selectById(id);
    }

    /**
     * 商户/门店详情by条件
     * @param where 商户/门店条件
     * @return 商户/门店详情
     */
	@Override
    public QrShopView info(Wrapper<QrShopView> where){
        return qrShopMapperView.selectOne(where);
    }

    /**
     * 商户/门店详情by条件-自动封装Wrapper
     * @param where 商户/门店条件
     * @return 商户/门店详情
     */
	@Override
    public QrShopView info(QrShopView where) {
        Wrapper<QrShopView> wrapper = InitWrapperView(where);
        return info(wrapper);
    }

    /**
     * 商户/门店详情bySQL
     * @param columns  列名col1,col2,col3^
     * @param where 条件 col1=#{col1}
     * @param params col1:xx
     * @param mappings col1->col1
     * @return
     */
	@Override
    public QrShop info(String columns, String where, Map<String, Object> params, ResultMapping mappings) {
        return dbHelper.selectOne(columns, "qr_shop", where, params, QrShop.class, mappings);
    }

    /**
     * 商户/门店批量查询byid
     * @param ids 商户/门店主键集合
     * @return 商户/门店列表
     */
	@Override
    public List<QrShopView> select(List<Integer> ids){
        return qrShopMapperView.selectBatchIds(ids);
    }

    /**
     * 商户/门店批量查询by条件
     * @param where 商户/门店条件
     * @return 商户/门店列表
     */
	@Override
    public List<QrShopView> select(Wrapper<QrShopView> where){
        return qrShopMapperView.selectList(where);
    }

    /**
     * 商户/门店批量查询by条件-自动封装Wrapper
     * @param where 商户/门店条件
     * @return 商户/门店列表
     */
    @Override
    public List<QrShopView> select(QrShopView where) {
        Wrapper<QrShopView> wrapper = InitWrapperView(where);		
        return select(wrapper);
    }

    /**
     * 商户/门店批量查询bymap条件
     * @param map 商户/门店map条件
     * @return 商户/门店列表
     */
	@Override
    public List<QrShopView> select(Map<String,Object> map){
        return qrShopMapperView.selectByMap(map);
    }

    /**
     * 商户/门店批量查询b条件分页
     * @param page 分页条件
     * @param where 查询条件
     * @return
     */
	@Override
    public IPage<QrShopView> select(IPage<QrShopView> page, Wrapper<QrShopView> where){
        return qrShopMapperView.selectPage(page, where);
    }

    /**
     * 商户/门店批量查询b条件分页
     * @param page 分页条件
     * @param where 查询条件
     * @return
     */
    @Override
    public IPage<QrShopView> select(IPage<QrShopView> page, QrShopView where) {
		Wrapper<QrShopView> wrapper = InitWrapperView(where);		
        return select(page, wrapper);
    }

    /**
     * 商户/门店查询记录数
     * @param where 查询条件
     * @return
     */
	@Override
    public Integer selectCount(Wrapper<QrShopView> where){
        return qrShopMapperView.selectCount(where);
    }

    /**
     * 商户/门店查询记录数
     * @param where 查询条件
     * @return
     */
	@Override
    public Integer selectCount(QrShopView where){
		Wrapper<QrShopView> wrapper = InitWrapperView(where);
        return selectCount(wrapper);
    }

    /**
     * 商户/门店批量查询bySQL条件分页
     * @param columns 列col1,col2,col3……
     * @param where 条件col1=#{col1} and col2=#{col2}
     * @param orderBy 排序字段
     * @param params 参数化 col1=xx
     * @param pageNumber 分页页码
     * @param pageSize 每页行数
     * @param mappings 查询列和实体映射
     * @return 分页之后的数据含总行数
     */
	@Override
    public DataPage<QrShopView> select(String columns, String where, String orderBy, Map<String, Object> params, int pageNumber, int pageSize, ResultMapping mappings){
        return dbHelper.select(columns, "qr_shop", where, orderBy, params, pageNumber, pageSize, QrShopView.class,mappings);
    }

    /**
     * 商户/门店批量查询bySQL条件
     * @param columns 列col1,col2,col3……
     * @param where 条件col1=#{col1} and col2=#{col2}
     * @param params 参数化 col1=xx
     * @param mappings 查询列和实体映射
     * @return 栏目扩展列表
     */
	@Override
    public List<QrShopView> select(String columns, String where, Map<String, Object> params, ResultMapping mappings){
        return dbHelper.select(columns,"qr_shop",where,params,QrShopView.class,mappings);
    }
}